Computer software programs or applications are often developed to solve a particular set of problems for potential users of the computer software programs. Because the users of the applications may use the applications to solve different problems or to solve the particular set of problems under specific circumstances, which may be different from predicted circumstances during the development of the software applications, adaptation of the software applications may be required for the applications to be used by the particular users to address their own needs.
On the other hand, the software programs may be revised or upgraded by software developers or vendors. Because adaptations may be made by the users, the users may require the revised or upgraded versions of the applications to work with the previously made adaptations with minimum or no effort to modify the software programs.
To address the issues of adaptation, certain software vendors provide source code of the software applications along with tools required to manipulate the source code, to the users. The users may modify the source code with the tools to make customized software builds and to deploy the adapted software applications. However, such approaches may often involve a large effort to use the tools, to understand the source code, and/or to make the adaptations. Further, any revision or upgrade made by the software vendors may still require the applications to be modified in order to be used, because the previously user-made modification may be unworkable with the new changes in the applications made by the software vendors. Moreover, software developers generally prefer not to release valuable source code.
Certain other software vendors, on the other hand, approach these issues by defining explicitly the options that can be adapted within the scope of the applications. These options may be pre-thought and implemented as configuration data, such as a set of values for a particular variable, to address a specific use case. The applications may read the configuration data directly in a specific order or sequence to determine particular options. That is, an application and its associated configuration data may be inseparable. Thus, these options may not be changed without restarting the application.
In addition, such approaches may often involve a large number of configuration tools and specific configurable options. Because pre-thought and specific options cannot predict all use cases or circumstances, certain adaptations of the applications may still need to be made in the applications themselves. In addition, revisions or upgrades to the applications may also change the pre-thought options or change the order of data, thus causing the previously made adaptations incompatible with the revisions or upgrades. Such incompatibilities may increase significantly in complex applications, such as user interface intensive applications.
In certain web-based applications, some software vendors may use features such as auto-fill to eliminate the need for entering repetitive data by the users when filling out certain fields of a form or table. Such features may often provide default values of frequently used information such as names, email addresses, and street addresses on behave of the users. For example, U.S. Patent Application Publication No. 2005/0257148, published on Nov. 17, 2005, to Goodman et al., discloses an intelligent auto-fill method in which machine learning techniques are used to automatically fill one or more fields across a diverse array of web forms. However, such auto-fill features may often be limited to providing default values of the frequently used information for the convenience of the users by analyzing the usage history of such information and may often fail to address relationships between the applications and adaptations of the applications.
Methods and systems consistent with certain features of the disclosed embodiments are directed to solving one or more of the problems set forth above.